1. Field
The present invention is generally directed to computing systems. More particularly, the present invention is directed to techniques for enabling operations to use different types of virtual memory spaces in computing systems.
2. Background Art
Many processing systems include a central processing unit (CPU) and a graphics processing unit (GPU). The CPU is a largely serial device that processes instructions sequentially, with subsequent instructions often relying on the results of previous instructions. The GPU, on the other hand, is a highly parallelized device, often including multiple execution units. Through its parallelized architecture, a GPU can be especially apt at executing graphics commands that often include the same operation executed on a multitude of different data sets (e.g., operations to change the state of pixels of a display).
Because GPU operating systems are unable to effectively utilize virtual memory spaces, they are often incapable of operating in portions of virtual memory that are not guaranteed to be present in physical memory. Put differently, for example, many GPUs cannot handle page faults. Thus, when the CPU's operating system, which manages the virtual memory spaces, allocates a virtual memory space for an application running commands on the GPU, the application must either be initially allocated a pinned virtual memory space or must copy the virtual memory space over to a pinned memory space when the commands are executed by the GPU.